﻿//#define _CRT_SECURE_NO_WARNINGS
//#include <iostream>
//using namespace std;
////C++第一个程序
//int main()
//{
//	cout << "hello world" << endl;
//	return 0;
//}

//#include <iostream>
//#include <stdio.h>
//using namespace std;
////xc是命名空间的名字，⼀般开发中是⽤项⽬名字做命名空间名
//namespace xc
//{
//	// 命名空间中可以定义变量/函数/类型
//	int rand = 10;
//	int Add(int left, int right)
//	{
//		return left + right;
//	}
//	struct Node
//	{
//		struct Node* next;
//		int val;
//	};
//}
//int main()
//{
//	//这里默认是访问的是全局的rand函数指针
//	printf("%p\n", rand);
//	//这里指定xc命名空间的rand
//	printf("%d\n", xc::rand);
//	//printf("%d\n", xc::cc::rand);
//	//printf("%d\n", xc::cc::Add(3, 2));
//	return 0;
//}

//#include <iostream>
//#include <stdio.h>
//using namespace std;
////xc是命名空间的名字，⼀般开发中是⽤项⽬名字做命名空间名
//namespace xc
//{
//	namespace cc
//	{
//		// 命名空间中可以定义变量/函数/类型
//		int rand = 10;
//		int Add(int left, int right)
//		{
//			return left + right;
//		}
//		struct Node
//		{
//			struct Node* next;
//			int val;
//		};
//	}
//}
//int main()
//{
//	//这里默认是访问的是全局的rand函数指针
//	//printf("%p\n", rand);
//	//这里指定xc命名空间的rand
//	printf("%d\n",xc::cc::rand);
//	printf("%d\n", xc::cc::Add(3,2));
//	return 0;
//}


//#include <iostream>
//using namespace std;
//namespace xc
//{
//	int rand = 10;
//}
//int main()
//{
//	printf("%d\n", xc::rand);
//	return 0;
//}

//#include<stdio.h>
//#include <iostream>
//namespace xc
//{
//	int a = 0;
//	int b = 1;
//}
//int main()
//{
//	// 编译报错：error C2065: “a”: 未声明的标识符
//	printf("%d\n", a);
//	return 0;
//}

//#include <iostream>
//using namespace std;
//int main()
//{
//	int a = 0;
//	double b = 0.1;
//	char c = 'x';
//
//	cout << a << " " << b << " " << c << endl;
//	std::cout << a << " " << b << " " << c << std::endl;
//	scanf("%d %lf", &a, &b);
//	printf("%d %lf", a, b);
//
//	//可以自动识别变量的类型
//	cin >> a;
//	cin >> b >> c;
//
//	cout << a << endl;
//	cout << b << " " << c << endl;
//	return 0;
//}


//#include <iostream>
//using namespace std;
//
//void Func(int a = 0)
//{
//	cout << a << endl;
//}
//int main()
//{
//	Func();
//	Func(10);// 没有传参时，使⽤参数的默认值
//	return 0;// 传参时，使⽤指定的实参
//}

//#include <iostream>
//using namespace std;
//// 全缺省
//void Func1(int a = 10, int b = 20, int c = 30)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl << endl;
//}
//// 半缺省
//void Func2(int a, int b = 10, int c = 20)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl << endl;
//}
//int main()
//{
//	Func1();
//	Func1(1);
//	Func1(1, 2);
//	Func1(1, 2, 3);
//
//	Func2(100);
//	Func2(100, 200);
//	Func2(100, 200, 300);
//	return 0;
//}


//#include <iostream>
//using namespace std;
//// 1、参数类型不同
//int Add(int left, int right)
//{
//	cout << "int Add(int left, int right)" << endl;
//	return left + right;
//}
//double Add(double left, double right)
//{
//	cout << "double Add(double left, double right)" << endl;
//	return left + right;
//}
//// 2、参数个数不同
//void f()
//{
//	cout << "f()" << endl;
//}
//void f(int a)
//{
//	cout << "f(int a)" << endl;
//}
//// 3、参数类型顺序不同
//void f(int a, char b)
//{
//	cout << "f(int a,char b)" << endl;
//}
//void f(char b, int a)
//{
//	cout << "f(char b, int a)" << endl;
//}
//int main()
//{
//	Add(2,5);
//	Add(2.9,1.5);
//
//	f();
//	f(1);
//
//	f(5, 'c');
//	f('c', 4);
//
//	return 0;
//}


////返回值不同不能作为重载条件，因为调⽤时也⽆法区分
//void fxx()
//{}
//
//int fxx()
//{
// return 0;
//}


//#include <iostream>
//using namespace std;
//// 下⾯两个函数构成重载
//// f()但是调⽤时，会报错，存在歧义，编译器不知道调⽤谁
//void f1()
//{
//	cout << "f()" << endl;
//}
//void f1(int a = 10)
//{
//	cout << "f(int a)" << endl;
//}
//
//int main()
//{
//	f1();
//	return 0;
//}